#pragma once
#include "CMultiParentShareableDependencyObject.h"


class HWCompTreeNode;
class CRenderTarget;
class CTransform;


class CProjection;
class CGeometry;
class CTransitionTarget;


class UIElementClone :
	public CMultiParentShareableDependencyObject
{

public: 
	static HRESULT CloneForTarget(CUIElement * pUIE, CRenderTarget * pRenderTarget, UIElementClone * * ppCloneUIE);
	virtual XUINT32 GetTypeIndex() const;
	HRESULT GetLastCompNode(HWCompTreeNode * * ppCompNode);

protected: 
	UIElementClone(CCoreServices * pRenderCore);
	virtual ~UIElementClone();
private: 
	HRESULT Initialize(CRenderTarget * pRenderTarget, CUIElement * pUIElement);
public: 
	struct XPOINTF m_independentOffset;

	CTransform * m_pTransform;
	struct XPOINTF m_renderTransformOrigin;
	CProjection * m_pProjection;
	struct XSIZEF m_elementSize; 
	CGeometry * m_pLayoutClip;
	CGeometry * m_pClip;
	XFLOAT m_rOpacity;
	CTransitionTarget * m_pTransitionTarget;
	struct XPOINTF m_dependentOffset;
	XFLOAT m_layoutWidth;
	XFLOAT m_layoutHeight;
	XUINT32 m_flipRightToLeft;
	XUINT32 m_flipRightToLeftInPlace;
};



